Pista: En un archivo con formato Stockholm, las secuencias son las únicas líneas que no comienzan con numeral #= ni //, la regex es: ^(?![#=|//])
O31699/88-139 EVMLTDIPRLHINDPIMKGFGMVINN..GFVCVENDE
#=GR O31699/88-139 AS ________________*____________________
//
Usar: match
, @r_str
, open
, eachline
, close
, println
or print
Opcional: chomp
In [16]:
"""Función para convertir un archivo Stockholm en FASTA (secuencia en una sola línea).
La función toma como argumentos la dirección/nombre de un archivo Stockholm y del archivo FASTA que se creara.
La función retorna la dirección/nombre del FASTA."""
function stockholm2fasta(sto, fas)
# COMPLETAR
end
Out[16]:
In [43]:
?stockholm2fasta
Out[43]:
In [44]:
"""Función para convertir un archivo Stockholm en FASTA (secuencia en una sola línea).
La función toma como argumentos la dirección/nombre de un archivo Stockholm y del archivo FASTA que se creara.
La función retorna la dirección/nombre del FASTA."""
function stockholm2fasta(sto, fas)
fh_in = open(sto, "r")
open(fas, "w") do fh_out
for line in eachline(fh_in)
m = match(r"^(?![#=|//])(\S+)\s+(\S+)", line)
if m != nothing
println(fh_out, ">", m.captures[1], "\n", m.captures[2])
end
end
end
close(fh_in)
fas
end
Out[44]:
In [50]:
stockholm2fasta("data/PF09645_full.stockholm", "data/out.fas")
Out[50]:
In [51]:
run(`cat ./data/out.fas`)
Usar PyCall para importar BioPython en Julia. Un ejemplo similar en (Bio)Python está al final de la wiki de AlignIO:
from Bio import AlignIO
input_handle = open("example.phy", "rU")
output_handle = open("example.sth", "w")
alignments = AlignIO.parse(input_handle, "phylip")
AlignIO.write(alignments, output_handle, "stockholm")
output_handle.close()
input_handle.close()
Usar: AlignIO.parse
, AlignIO.write
In [63]:
using PyCall
@pyimport Bio.AlignIO as AlignIO
"""Función para convertir un archivo Stockholm en FASTA usando BioPython.
La función toma como argumentos la dirección/nombre de un archivo Stockholm y del archivo FASTA que se creara.
La función retorna la dirección/nombre del FASTA."""
function py_stockholm2fasta(sto, fas)
fh_in = open(sto, "r")
open(fas, "w") do fh_out
# COMPLETAR
end
close(fh_in)
fas
end
Out[63]:
In [64]:
using PyCall
@pyimport Bio.AlignIO as AlignIO
"""Función para convertir un archivo Stockholm en FASTA usando BioPython.
La función toma como argumentos la dirección/nombre de un archivo Stockholm y del archivo FASTA que se creara.
La función retorna la dirección/nombre del FASTA."""
function py_stockholm2fasta(sto, fas)
fh_in = open(sto, "r")
open(fas, "w") do fh_out
alignments = AlignIO.parse(fh_in, "stockholm")
AlignIO.write(alignments, fh_out,"fasta")
end
close(fh_in)
fas
end
Out[64]:
In [65]:
py_stockholm2fasta("data/PF09645_full.stockholm", "data/py_out.fas")
Out[65]:
In [66]:
run(`cat ./data/py_out.fas`)